package movepaint.stateMachine;

import fr.lri.swingstates.canvas.CStateMachine;
import fr.lri.swingstates.canvas.CText;
import fr.lri.swingstates.canvas.Canvas;
import fr.lri.swingstates.sm.State;
import fr.lri.swingstates.sm.Transition;
import java.awt.Font;
import movepaint.utils.MenuItem;

/**
 * Machine a état utilisée pour la mise en gras des options survolées du pieMenu.
 * @author Paulino A.
 * @version 1.0
 */
public class HighLightMachine extends CStateMachine {

    /**
     * Constructeur de la machine a état
     */
    public HighLightMachine() {
        super();
    }

    /**
     * Constructeur de la machine a état
     * @param c Canvas auquel on associe la machine a état
     */
    public HighLightMachine(Canvas c) {
        super(c);
    }

    /**
     * Retourne le nom de la machine a état
     * @return Nom de la machine a état
     */
    public String getName() {
        return "HighLightMachine";
    }

    /**
     * Etat dans lequel les actions du menu ne sont pas en gras
     */
    public State out = new State() {

        // Transition mettant en gras l'option survolée
        Transition hiliteItem = new EnterOnTag(MenuItem.class, ">> in") {

            @Override
            public void action() {
                ((CText) getShape()).setFont(new Font("verdana", Font.BOLD, 10));
            }
        };
    };

    /**
     * Etat dans lequel les actions du menu sont en gras
     */
    public State in = new State() {

        // Transition remettant le style par défaut de l'option qui n'est plus survolée
        Transition unhiliteItem = new LeaveOnTag(MenuItem.class, ">> out") {

            @Override
            public void action() {
                ((CText) getShape()).setFont(new Font("verdana", Font.PLAIN, 10));
            }
        };
    };
}
